from info import constants
from info.models import User, News, Category
from . import index_blue
from flask import render_template, current_app, session
import logging


@index_blue.route('/')
def index():
    """主页
    1.从session中，读取用户登录信息user_id
    2.查询user_id对应的user信息
    3.查询新闻点击排行


    构造渲染模板的数据
    响应渲染之后的主页
    """
    #1.从session中，读取用户登录信息user_id
    user_id = session.get('user_id',None)

    #2.查询user_id对应的user信息
    user = None
    if user_id:
        try:
            user = User.query.get(user_id)
        except Exception as e:
            logging.error(e)
     #3.  查询新闻点击排行,查询主页新闻数据   新闻分类：（categories）
    news_clicks = None
    categories = None
    try:
        # 点击排行
        news_clicks = News.query.order_by(News.clicks.desc()).limit(constants.CLICK_RANK_MAX_NEWS)
        #新闻分类
        categories = Category.query.all()
    except Exception as e:
        logging.error(e)




    #构造渲染模板的数据（上下文）
    context = {
    #to_dict()目的是为了返回处理之后的数据
    #三元运算符：如果有user，就把user.to_dict()赋值给'user'反之，就把None赋值给'user'
        'user':user.to_dict() if user else None,
        'news_clicks':news_clicks,
        'categories':categories
    }

    return render_template('news/index.html',context=context)

@index_blue.route('/favicon.ico')
def favicon():
    """返回网站tittle图标"""
    return current_app.send_static_file('news/favicon.ico')